1. Field of Art
The disclosure generally relates to the field of encoding audio and video files.
2. Description of the Related Art
Users of computing devices commonly view videos and listen to audio on their computing devices. Generally, users download an audio and/or a video file on their computing device and execute the file to hear or view the content of the file. Such a system of viewing content is disadvantageous because it requires a user to wait for a file to download before the user can view the file. Additionally, such a system of consuming audio and/or video files is not practicable when an audio or video file is embedded on a webpage.
To overcome these shortcomings, some systems enable users to stream audio or video files from a server. However, depending on the size of the audio/video files and the quality of network connection between the user's computing device and a server, the audio/video files may take too long to stream and therefore may interrupt a user's playback stream. As a result, servers generally transcode audio/video files to an appropriate size to provide an uninterrupted playback stream to the user. In such a system, a user does not have to wait a substantial period of time because the server downloads and transcodes the file in substantially real time and the user's computing device downloads the transcoded stream and plays it back to the user in substantially real time.
Certain file formats, however, such as MP4, Quick Time File Format (MOV), Third Generation Partnership Project (3GP), etc require specifying a size and location of every audio and/or video sample contained in the file to execute or playback the file. If such files are transcoded, users' computing devices are unable to stream them in real time. For example, a server transcoding such file formats does not know the size and location of every audio and/or video sample contained in the file until the entire file is transcoded. Thus, a computing device cannot stream the audio/video file until the server has transcoded the entire file and has provided the size and location data of each audio/video sample to the computing device. Thus, a user who wants to stream such a file format from a server transcoding the file, would have to wait a period of time to allow the server to transcode the file and provide size and location data of samples within the file. Such waiting periods negatively impacts a user's playback experience.
Some transcoding servers may overcome the problem by caching and transcoding video files before any user requests the file. As such, the server may be able to send the transcoded video stream and the size and location data of each sample of the file as soon as the user's computing device requests it. However, such a process is disadvantageous because it requires the server to accurately predict which videos a user may want to watch at a later time. Additionally, such a process is also cumbersome as the server may have to cache a large number of video files that a user may potentially want to view, in order to provide a seamless playback experience to its users.